home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / sys / sysmacros.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  2KB  |  70 lines

  1. /* Definitions of macros to access `dev_t' values.
  2.    Copyright (C) 1996, 1997, 1999, 2003, 2004 Free Software Foundation, Inc.
  3.    This file is part of the GNU C Library.
  4.  
  5.    The GNU C Library is free software; you can redistribute it and/or
  6.    modify it under the terms of the GNU Lesser General Public
  7.    License as published by the Free Software Foundation; either
  8.    version 2.1 of the License, or (at your option) any later version.
  9.  
  10.    The GNU C Library is distributed in the hope that it will be useful,
  11.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.    Lesser General Public License for more details.
  14.  
  15.    You should have received a copy of the GNU Lesser General Public
  16.    License along with the GNU C Library; if not, write to the Free
  17.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  18.    02111-1307 USA.  */
  19.  
  20. #ifndef _SYS_SYSMACROS_H
  21. #define _SYS_SYSMACROS_H    1
  22.  
  23. #include <features.h>
  24.  
  25. /* If the compiler does not know long long it is out of luck.  We are
  26.    not going to hack weird hacks to support the dev_t representation
  27.    they need.  */
  28. #ifdef __GLIBC_HAVE_LONG_LONG
  29. __extension__
  30. extern __inline unsigned int gnu_dev_major (unsigned long long int __dev)
  31.      __THROW;
  32. __extension__
  33. extern __inline unsigned int gnu_dev_minor (unsigned long long int __dev)
  34.      __THROW;
  35. __extension__
  36. extern __inline unsigned long long int gnu_dev_makedev (unsigned int __major,
  37.                             unsigned int __minor)
  38.      __THROW;
  39.  
  40. # if defined __GNUC__ && __GNUC__ >= 2
  41. __extension__ extern __inline unsigned int
  42. __NTH (gnu_dev_major (unsigned long long int __dev))
  43. {
  44.   return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff);
  45. }
  46.  
  47. __extension__ extern __inline unsigned int
  48. __NTH (gnu_dev_minor (unsigned long long int __dev))
  49. {
  50.   return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff);
  51. }
  52.  
  53. __extension__ extern __inline unsigned long long int
  54. __NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor))
  55. {
  56.   return ((__minor & 0xff) | ((__major & 0xfff) << 8)
  57.       | (((unsigned long long int) (__minor & ~0xff)) << 12)
  58.       | (((unsigned long long int) (__major & ~0xfff)) << 32));
  59. }
  60. # endif
  61.  
  62.  
  63. /* Access the functions with their traditional names.  */
  64. # define major(dev) gnu_dev_major (dev)
  65. # define minor(dev) gnu_dev_minor (dev)
  66. # define makedev(maj, min) gnu_dev_makedev (maj, min)
  67. #endif
  68.  
  69. #endif /* sys/sysmacros.h */
  70.